<?php
	class Apuestas extends Zend_Db_Table_Abstract
	{
		protected $_name = 'apuesta';
		
		/* Instancia de la Tabla  @var unknown_type  */
        protected static $_instance = null;
		
		/* Obtener la instancia de la tabla de manera estatica  @return Zend_Db_Table */
        public static function getInstance()
        {
            if (null === self::$_instance) 
			{
                self::$_instance = new self();
            }
            return self::$_instance;
        }
		
		/* Metodo estatico para obtener los grandes premios con resultados */
		public static function getApuestas()
		{
			$table = self::getInstance();
			$select = $table->select();
			$select->setIntegrityCheck(false);
			$select->from($table);
			
			$select->joinLeft('gran_premio', 'gran_premio.id_gp = apuesta.id_gp');
			$select->joinLeft('piloto','piloto.id_piloto = apuesta.id_piloto_pole',
				array 
				(
					'piloto_pole' 	=> 'piloto.nombre_piloto',
					'escuderia_pole'=> 'piloto.escuderia'
				)
			);
			$select->joinLeft
			(
				array('piloto_p1'=>'piloto'),'piloto_p1.id_piloto = apuesta.id_piloto_p1',
					array
					(
						'piloto_p1' 	=> 'piloto_p1.nombre_piloto',
						'escuderia_p1'=> 'piloto_p1.escuderia'
					)
			);
			$select->joinLeft(array('piloto_p2'=>'piloto'),'piloto_p2.id_piloto = apuesta.id_piloto_p2',
				array
				(
					'piloto_p2' 	=> 'piloto_p2.nombre_piloto',
					'escuderia_p2'=> 'piloto_p2.escuderia'
				)
			);
			$select->joinLeft(array('piloto_p3'=>'piloto'),'piloto_p3.id_piloto = apuesta.id_piloto_p3',
				array
				(
					'piloto_p3' 	=> 'piloto_p3.nombre_piloto',
					'escuderia_p3'=> 'piloto_p3.escuderia'
				)
			);
			$select->joinLeft(array('persona'=>'participante'),'persona.id_user = apuesta.id_user',
				array
				(
					'persona' 	=> 'persona.nombre_mostrar'
				)
			);
			$select->order('gran_premio.id_gp DESC');
			$select->order('apuesta.id_user ASC');
			return $table->fetchAll($select);
		}
		
		public static function getApuestasGp($id)
		{
			$table = self::getInstance();
			$select = $table->select();
			$select->setIntegrityCheck(false);
			$select->from($table);
			
			$select->joinLeft('gran_premio', 'gran_premio.id_gp = apuesta.id_gp');
			$select->joinLeft('piloto','piloto.id_piloto = apuesta.id_piloto_pole',
				array 
				(
					'piloto_pole' 	=> 'piloto.nombre_piloto',
					'escuderia_pole'=> 'piloto.escuderia'
				)
			);
			$select->joinLeft
			(
				array('piloto_p1'=>'piloto'),'piloto_p1.id_piloto = apuesta.id_piloto_p1',
					array
					(
						'piloto_p1' 	=> 'piloto_p1.nombre_piloto',
						'escuderia_p1'=> 'piloto_p1.escuderia'
					)
			);
			$select->joinLeft(array('piloto_p2'=>'piloto'),'piloto_p2.id_piloto = apuesta.id_piloto_p2',
				array
				(
					'piloto_p2' 	=> 'piloto_p2.nombre_piloto',
					'escuderia_p2'=> 'piloto_p2.escuderia'
				)
			);
			$select->joinLeft(array('piloto_p3'=>'piloto'),'piloto_p3.id_piloto = apuesta.id_piloto_p3',
				array
				(
					'piloto_p3' 	=> 'piloto_p3.nombre_piloto',
					'escuderia_p3'=> 'piloto_p3.escuderia'
				)
			);
			$select->joinLeft(array('persona'=>'participante'),'persona.id_user = apuesta.id_user',
				array
				(
					'persona' 	=> 'persona.nombre_mostrar'
				)
			);
			$select->order('gran_premio.id_gp DESC');
			$select->order('apuesta.id_user ASC');
			
			if ($id)
			{
			    $select->where('apuesta.id_gp = ?', $id);
			}
			else
			{
			    $select->where('finalizado = 0');
			}
			return $table->fetchAll($select);
		}
		
		public function nuevaApuesta($data)
		{
			$table = new Apuestas();
			$table->insert($data);
			return $table->getAdapter()->lastInsertId();
		}
	}